package collection;

import java.util.HashMap;
import java.util.Map;

/**
 * Map接口实现类
 */
public class Map_ {

    public static void main(String[] args) {

        /*
            Map 与 Collection 并列存在。用于保存具有映射关系的数据:Key-Value(双列元素)
            Map 中 key 和 value 可以是任何引用类型的数据，会封装到 HashMap$Node 对象中
            Map 中 key 不允许重复，原因和 HashSet 一样
            Map 中 value 可以重复
            Map 中 key 可以为null， value也可以为null，key为null 只能有一个，value为null可以有多个
            常用 String 类 作为 Map 的 key
            key 和 value 之间存在单向一对一关系，即通过指定的 key 总能找到对应的value

            可以把map 看成 k:set v:collection
         */

        Map map = new HashMap<>();
        map.put("no1", "lmy");
        map.put("no2", "张无忌");
        map.put("no1", "张三丰");//有相同的 key ，就相当于替换
        map.put("no3", "张三丰");
        map.put(null, null);
        map.put(null, "abc");//替换上边的

        //get方法，传入key，返回对应的value
        System.out.println(map.get("no2"));

        System.out.println("map: " + map);

        /*
            Map 存放的数据的 key-value 是放在一个 HashMap$Node中的
            又因为 Node 实现了 Entry 接口，也可以说一对k-v就是一个Entry
         */
    }
}
